home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / var / lib / python-support / python2.6 / rdflib / store / Redland.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  5.1 KB  |  134 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import rdflib
  5. from rdflib.Graph import Graph
  6. from rdflib.URIRef import URIRef
  7. from rdflib.Node import Node
  8. from rdflib.BNode import BNode
  9. from rdflib.Literal import Literal
  10. import RDF
  11. from rdflib.store import Store
  12.  
  13. def _t(i):
  14.     if isinstance(i, rdflib.URIRef):
  15.         return RDF.Node(RDF.Uri(unicode(i)))
  16.     if isinstance(i, rdflib.BNode):
  17.         return RDF.Node(blank = str(i))
  18.     if isinstance(i, rdflib.Literal):
  19.         return RDF.Node(literal = str(i))
  20.     if isinstance(i, Graph):
  21.         return _t(i.identifier)
  22.     if i is None:
  23.         return None
  24.     raise TypeError, 'Cannot convert %s' % `i`
  25.  
  26.  
  27. def _c(i):
  28.     return _t(i)
  29.  
  30.  
  31. def _f(i):
  32.     if isinstance(i, RDF.Uri):
  33.         return rdflib.URIRef(i)
  34.     if isinstance(i, RDF.Node):
  35.         if i.is_blank():
  36.             return rdflib.BNode(i.blank_identifier)
  37.         if i.is_literal():
  38.             return rdflib.Literal(i)
  39.         return URIRef(i.uri)
  40.     isinstance(i, RDF.Node)
  41.     if i is None:
  42.         return None
  43.     raise TypeError, 'Cannot convert %s' % `i`
  44.  
  45.  
  46. class Redland(Store):
  47.     context_aware = True
  48.     
  49.     def __init__(self, model = None):
  50.         super(Redland, self).__init__()
  51.         if model is None:
  52.             model = RDF.Model(RDF.MemoryStorage(options_string = "contexts='yes'"))
  53.         
  54.         self.model = model
  55.  
  56.     
  57.     def __len__(self, context = None):
  58.         ''' Return number of triples (statements in librdf). '''
  59.         count = 0
  60.         for triple, cg in self.triples((None, None, None), context):
  61.             count += 1
  62.         
  63.         return count
  64.  
  65.     
  66.     def add(self, .1, context = None, quoted = False):
  67.         '''        Add a triple to the store of triples.
  68.         '''
  69.         (subject, predicate, object) = .1
  70.         if context is not None:
  71.             self.model.append(RDF.Statement(_t(subject), _t(predicate), _t(object)), _c(context))
  72.         else:
  73.             self.model.append(RDF.Statement(_t(subject), _t(predicate), _t(object)))
  74.  
  75.     
  76.     def remove(self, .1, context, quoted = False):
  77.         (subject, predicate, object) = .1
  78.         if context is None:
  79.             contexts = self.contexts()
  80.         else:
  81.             contexts = [
  82.                 context]
  83.         for context in contexts:
  84.             if subject is None and predicate is None and object is None:
  85.                 self.model.remove_statements_with_context(_c(context))
  86.                 continue
  87.             del self.model[(RDF.Statement(_t(subject), _t(predicate), _t(object)), _c(context))]
  88.         
  89.  
  90.     
  91.     def triples(self, .1, context = None):
  92.         '''A generator over all the triples matching '''
  93.         (subject, predicate, object) = .1
  94.         cgraph = RDF.Model()
  95.         triple = RDF.Statement(_t(subject), _t(predicate), _t(object))
  96.         for statement, c in self.model.find_statements_context(triple):
  97.             if context is None or _f(c) == context.identifier:
  98.                 cgraph.append(statement)
  99.                 continue
  100.         
  101.         for statement in cgraph.find_statements(triple):
  102.             ret = []
  103.             for c in self.model.get_contexts():
  104.                 if self.model.contains_statement_context(statement, _c(context)):
  105.                     ret.append(c)
  106.                     continue
  107.             
  108.             yield ((_f(statement.subject), _f(statement.predicate), _f(statement.object)), iter(ret))
  109.         
  110.  
  111.     
  112.     def contexts(self, triple = None):
  113.         for context in self.model.get_contexts():
  114.             yield Graph(self, _f(context))
  115.         
  116.  
  117.     
  118.     def bind(self, prefix, namespace):
  119.         pass
  120.  
  121.     
  122.     def namespace(self, prefix):
  123.         pass
  124.  
  125.     
  126.     def prefix(self, namespace):
  127.         pass
  128.  
  129.     
  130.     def namespaces(self):
  131.         pass
  132.  
  133.  
  134.